package pos.dominio;


import java.util.LinkedList;
import java.util.List;

import pos.dato.JDBCComentarioDAO;
import pos.dato.JDBCEventoDAO;

public class EventoManager implements IEventoManager {
	private static IEventoManager ps;
    private List<Evento> eventos;
    private JDBCComentarioDAO cdao;
    private JDBCEventoDAO edao;
  

    public static synchronized IEventoManager getInstance() {
        if (ps == null)
            ps = new EventoManager();
        return ps;
    }

    private EventoManager() {
    	edao=new JDBCEventoDAO();
    	cdao=new JDBCComentarioDAO();
        eventos = (new JDBCEventoDAO()).selectAllEventos();
             
    }
    /* (non-Javadoc)
	 * @see pos.dominio.IEventoManager#getEventosPosibleVotar()
	 */
    @Override
	public List<Evento> getEventosPosibleVotar(){
    	List<Evento> lista=new LinkedList<Evento>();
    	for(Evento e:eventos){
    		if(e.isHaSidoVotado()==false){
    			lista.add(e);
    		}
    	}
    	return lista;
    }

    /* (non-Javadoc)
	 * @see pos.dominio.IEventoManager#getEventos()
	 */
    @Override
	public List<Evento> getEventos() {
        return eventos;
    }
   /* (non-Javadoc)
 * @see pos.dominio.IEventoManager#getEvento(java.lang.String)
 */
@Override
public Evento getEvento(String eventoID){
	   Evento result = null;
       for (Evento p : eventos){
           
           if (p.getEventoID().equals(eventoID)) {
               result = p;
           }
       }
       return result;
   }
   /* (non-Javadoc)
 * @see pos.dominio.IEventoManager#update(java.lang.String, java.lang.Integer)
 */
@Override
public void update(String eventoID,Integer voto){
	   edao.updateVoto(eventoID,voto);
   }
   /* (non-Javadoc)
 * @see pos.dominio.IEventoManager#insertarComentarioEnEvento(pos.dominio.Evento, pos.dominio.Comentario)
 */
@Override
public void insertarComentarioEnEvento(Evento evento,Comentario c){
	   edao. insertarComentarioEnEvento(evento,c);
   }
   /* (non-Javadoc)
 * @see pos.dominio.IEventoManager#asociarUsuarioEvento(java.lang.String, java.lang.String)
 */
@Override
public void asociarUsuarioEvento(String usuarioID,String eventoID){
	   edao.asociarUConE(usuarioID,eventoID);
   }
   /* (non-Javadoc)
 * @see pos.dominio.IEventoManager#insertarEvento(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
 */
@Override
public void insertarEvento(String n,String fecha,String et,String usuar){
	   edao.insert(n, fecha, et, usuar);
   }
}
